# -*- coding: utf-8 -*-
"""
Created on Sat Aug 19 15:23:07 2023

@author: skunk69
"""

import json

chinese_name = u'大学生坚韧人格评定量表'
english_name = 'Personality Hardiness Scale of College Students'
abbreviation = 'PHSCS'
category = u'行为方式量表'

outline = u"""坚韧人格被认为是集认知、行为、情感为一体的一种积极向上的人格特质，具 有该特质的个体，经常能够看到事物积极的方面，保持一种积极投入、乐观进取、坚忍不拔的认知和情感状态，面对艰苦或不利的情况，也能表现出较强的预见和控制力，将困难看作是一种挑战，是促进个人成长的机会。
为了在国内开展坚韧人格实证研究，卢国华和梁宝勇等人于2008年编制了《大学生坚韧人格评定量表》。该量表的编制以国外坚韧人格理论为基础，结合中国人对坚韧的理解，最终确立了中国坚韧人格的结构，即包含韧性、投入、控制和挑战四个维度。"""

instruction = u"""下面是一些描述人们兴趣、态度的句子，请仔细阅读，根据每个句子的内容和您自己的实际情况相符合的程度，在“完全不符合”、“有点符合”、“符合”和“完全符合”中选择一项。答案没有对错之分，请根据您的真实情况做出选择。"""

with open('PHSCS.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines[::5]:
    key,value = line.strip().split('.',maxsplit=1)
    items[key.strip()] = value.strip()

reverse_items = []
scales = [u'韧度',u'控制',u'投入',u'挑战']
scales_items = [
    [1,5,12,13,19,23],# 韧度
    [8,14,15,20,21,22,26,27],# 控制
    [6,7,9,11,16,17],# 投入
    [2,3,4,10,18,24,25],# 挑战    
    ]

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,28)}
print(f'complementary set= {check_set}')

factors = []
factors_scales = []
rating = [l.strip().split('.')[-1] for l in lines[1:5]]
score_rules = list(range(1,5))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《大学生坚韧人格评定量表》属于一个自评量表。"""

reliability = u"""正式样本为大学生群体。控制、投入、挑战和韧性4个分量表的内部一致性α系数分别为0.785，0.747，0.784和0.802，全量表为0.910。间隔2周的重测信度，控制、投入、挑战和韧性4个分量表分别为0.91，0.89，0.92，0.91，全量表为0.92，P<0.01。"""
validity = u"""结构效度方面，采用主成分分析方法对数据进行探索性因素分析和验证性因素分析，表明了四因子模型的稳定性。对样本同时施测中国大学生人格量表（CCSPS）中坚韧分量表和16PF中有恒性、稳定性和敢为性3个分量表，结果显示，除了坚韧人格的投入维度与16PF的稳定性和敢为性相关不显著外，其余各维度分、总分与CCSPS坚韧分量表和16PF的有恒性、稳定性和敢为性分量表得分均有显著正相关。另外，研究发现坚韧人格各因子分、总分与SCL-90总分呈显著负相关。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""各个维度的释义为：
（1）韧度，主要反映个体在追求目标时坚定执着，在困难面前乐观进取、坚韧不拔的特点。
（2）控制，主要反映个体主动把控和影响所经历事件的特点。
（3）投入，主要反映个体投入或专注于其所参与的活动的特点。
（4）挑战，主要反映个体能否将变化看成是一种挑战，并从中汲取成长力量的特点。
将各维度题目相加得到各维度分，所有27个条目得分之和即为该量表的总分，反映了被测者人格坚韧程度。"""

applications = u"""实际应用效果有待后续研究的证实。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)